package provider;

/**
 * @author Jiajie Wu
 * Web Services used: http://www.webservicex.net/airport.asmx
 * 					http://wsf.cdyne.com/WeatherWS/Weather.asmx 
 */

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

import com.cdyne.ws.weatherws.*;
import ws.airport.*;
import MashupModel.*;

@WebService
@SOAPBinding(style = Style.RPC)
public interface WSProvider {
	
	/**
	 * Get airport information by city name and the weather forecast by zip of the area. For data structures look at the 
	 * CityAirportInfomationAndForecastModel in MashUpModel
	 * @param city City Name to query airport info
	 * @param zip a US zip code 
	 * @return obj contains airport info and forecast info
	 */
	@WebMethod
	public CityAirportInformationAndForecastModel getAirportInfoAndForecastByCityAndZip(String city, String zip);
	
	/**
	 * Get airport information by city name and the hourly weather by zip of the area. For data structures look at the
	 * CityAirportInformationAndWeatherModel
	 * @param city City Name to query airport info
	 * @param zip a US zip code
	 * @return obj contains airport info and hourly weather info
	 */
	@WebMethod
	public CityAirportInformationAndWeatherModel getAirportInfoAndWeatherByCityAndZip(String city, String zip);
	
	/**
	 * Get airport information and the weather forecast by zip of the area. For data structures look at the 
	 * CityAirportInfomationAndForecastModel in MashUpModel
	 * @param city City Name to query airport info
	 * @param zip a US zip code 
	 * @return obj contains airport info and forecast info
	 */
	@WebMethod
	public CityAirportInformationAndForecastModel getAirportInfoAndForecastByZip(String zip);
	
	/**
	 * Get airport information and the hourly weather by zip of the area. For data structures look at the 
	 * CityAirportInfomationAndForecastModel in MashUpModel
	 * @param city City Name to query airport info
	 * @param zip a US zip code 
	 * @return obj contains airport info and weather info
	 */
	@WebMethod 
	public CityAirportInformationAndWeatherModel getAirportInfoAndWeatherByZip(String zip);
	
	/**
	 * Get all the us airports and weather types
	 * @return all the us airports and weather types
	 */
	@WebMethod
	public USAirportsInfoAndWeatherTypeModel getAllUSAirportsInfoAndWeatherType();
}
